package avicit.bdp.dms.das.dao;

import avicit.bdp.common.base.BaseDAO;
import avicit.bdp.dms.das.dto.BdpDasCategoryDTO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import com.github.pagehelper.Page;

/**
 * @金航数码科技有限责任公司
 * @作者：developer
 * @邮箱：developer@avic-digital.com
 * @创建时间： 2020-06-24 14:53
 * @类说明：bdp_das_categoryDao
 * @修改记录：
 */
@Repository
public interface BdpDasCategoryDao extends BaseDAO<BdpDasCategoryDTO> {
    Integer selectMaxOrder(String categoryId);

    /**
     * 查询所有分类节点接口（不进行权限过滤）
     * @return
     */
    List<BdpDasCategoryDTO> getCategoryListWithoutPerm(@Param("status") Integer status,
                                                       @Param("wordSecretList") List<String> wordSecretList);

    /**
     * 查询根节点
     * @return
     */
    BdpDasCategoryDTO findCategoryRootNode();

    /**
     * 根据条件查询分类节点
     * @param keyWords
     * @return
     */
    List<String> getCategoryListByCond(@Param("keyWords") String keyWords,
                                       @Param("wordSecretList") List<String> wordSecretList);

    /**
     * 根据项目空间ID查询空间创建者ID
     * 注意：
     *  1、数据开发工作台/数据计算-表管理，从公共模型导入到项目模型时，根据空间创建者角色获取模型表；
     * @param projectId
     * @return
     */
    String getCreatorByProjectId(@Param("projectId") String projectId);

    BdpDasCategoryDTO selectListByAuth(@Param("categoryName") String categoryName, @Param("parentId") String parentId,
                                       @Param("categoryIds") List<String> categoryIds);

    /**
     * 查询自己创建的分类节点
     * @param createdBy
     * @return
     */
    List<BdpDasCategoryDTO> getSelfCreatedCategoryList(@Param("createdBy") String createdBy);

    void updateStatus(@Param("ids") List<String> ids, @Param("status") Integer status);

    Page<BdpDasCategoryDTO> getPageList(@Param("parentId") String parentId,
                                        @Param("keyWords") String keyWords);

    BdpDasCategoryDTO getCategoryById(@Param("id") String id);

    List<BdpDasCategoryDTO> findCategoryTreeByStatus();
}
